#ifndef _COREUTIL_H_
#define _COREUTIL_H_

#include <string>
#include <variant>
#include <random>
#include "TypesLoader.h"
#include <functional>

namespace SEngine
{
    template<typename T, typename... Ts>
    inline bool IsAllTrue(T t, Ts... ts)
    {
        if (t) {
            if constexpr (sizeof...(Ts) > 0) {
                return IsAllTrue(ts...);
            }
            return true;
        }       
        return false;
    }

    std::string CreateUUID();

    template<typename T>
    T CreateUUID() {
        std::random_device rd;
        std::mt19937_64 gen(rd());
        std::uniform_int_distribution<T> dis;
        return dis(gen);
    }

    std::string SEReadText(const std::string & fileName);

    void SEWriteText(const std::string & fileName, const std::string & str);

    


} // namespace SEngine


#endif